Hexagonal Architecture
The book has now been published and the content of this chapter has likely changed substanstially.Also known as: Ports and Adapters
Create your application to work without either a UI or a database so you can run automated regression-tests against the application, work when the database becomes unavailable, and link applications together without any user involvement.
Alistair Cockburn has an interesting take on Layered Architectures[DDD,PEAA,WWW]; he views the domain model as the core of a hexagon that is surrounded by "Ports and Adapters" that connect it to the outside world (including a database).
Allow an application to equally be driven by users, programs, automated test or batch scripts, and to be developed and tested in isolation from its eventual run-time devices and databases. As events arrive from the outside world at a port, a technology-specific adapter converts it into a usable procedure call or message and passes it to the application. The application is blissfully ignorant of the nature of the input device. When the application has something to send out, it sends it out through a port to an adapter, which creates the appropriate signals needed by the receiving technology (human or automated). The application has a semantically sound interaction with the adapters on all sides of it, without actually knowing the nature of the things on the other side of the adapters.
Further Reading
Alistair's full write-up is at http://alistair.cockburn.us/crystal/articles/hpaaa/hexagonalportsandadaptersarchitecture.htm
Copyright © 2003-2008 Gerard Meszaros all rights reserved